# -*- coding: utf-8 -*-
# @Time        :2024/11/7 上午10:22
# @Author      :文刀水寿
# @File        : 09_正则表达式_元字符匹配.py
"""
 @Description :演示python正则表达式使用原元字符匹配
 字符       功能
 .          匹配任意1个字符，（除了\n） ,  \. 匹配 点 本身
 []          匹配[]中列举的字符 eg：[a-zA-Z0-9]这三种范围的组合
 \d          匹配数字，即0-9
 \D          匹配非数字
 \s          匹配空白，即空格，tab键
 \S             匹配非空白
 \w           匹配单词字符 ， 即a-z ， A-Z , 0-9 , _
 \W           匹配非单词字符
 数量匹配：
 字符     功能
 *          匹配前一个规则的字符出现0至无数次
 +          匹配前一个规则的字符出现1至无数次
 ？          匹配前一个规则的字符出现0次或1次
 {m}        匹配前一个规则的字符出现m次
 {m,}        匹配前一个规则的字符出现最少m次
 {m,n}       匹配前一个规则的字符出现m到n次

 边界匹配：
 字符                 功能
 ^                  匹配字符串开头
 $                   匹配字符串结尾
 \b                   匹配一个单词的边界
 \B                   匹配非单词的边界

 分组匹配：
 字符    功能
 |      匹配左右任意一个表达式
 ()     将括号中字符作为一个分组
"""
import re

# str = "fhjdsijfhgsdaifhdsjkfh89783  @ 2 3 >"
# result = re.findall(r'\W', str) #  字符串前面带上r标记，表示字符串中转义字符无效，就是普通字符的意思
# print(result)


# # 匹配账号，只能由字母和数字组成，长度限制6到10位
r = '^[0-9a-zA-Z]{6,10}$'
str2 = '123456'
print(re.findall(r, str2))

# 匹配qq号，要求纯数字，长度5-11，第一位不为0
r1 = '[0-9]{5,11}'
str3 = '123213657'
print(re.match(r1, str3))
print(f"'{re.match(r1, str3).group()}'")

# 匹配邮箱地址，只允许qq，163，gmail这三种邮箱地址
